import math

from schoolmaster.models import School


def get_area(latitude, longitude, dis):
    """
    确定查询经纬度范围
    :param latitude:中心纬度
    :param longitude:中心经度
    :param dis:半径
    :return:(minlat, maxlat, minlng, maxlng)
    """
    # print(latitude, longitude)
    r = 6371.137
    dlng = 2 * math.asin(math.sin(dis / (2 * r)) / math.cos(latitude * math.pi / 180))
    dlng = dlng * 180 / math.pi

    dlat = dis / r
    dlat = dlat * 180 / math.pi

    minlat = latitude - dlat  # 最小纬度

    maxlat = latitude + dlat  # 最大纬度
    minlng = longitude - dlng  # 最小经度
    maxlng = longitude + dlng  # 最大经度
    # 筛选园所
    schools = School.objects.filter(latitude__gte=minlat, latitude__lte=maxlat,
                                    longitude__gte=minlng, longitude__lte=maxlng).all()

    if schools:
        # 计算坐标最小的园所
        school = schools[0]
        min_num = school.latitude + school.longitude
        for x in schools:
            num = x.longitude + x.latitude
            if num < min_num or num == min_num:
                id = x.id
                min_num = num
        return id  # 返回园所id

    else:
        return 'failed'  # 这附近没有园所
